home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / RandomDot 1.1.0 / source / Error.c next >
Encoding:
C/C++ Source or Header  |  1994-10-19  |  5.8 KB  |  126 lines  |  [TEXT/KAHL]

  1. /* Error.c *** error routines.
  2.     by David Phillip Oster October 1994 oster@netcom.com
  3.     for:
  4.     Stuart Inglis singlis@waikato.ac.nz
  5.     Department of Computer Science
  6.     University of Waikato, Hamilton, New Zealand
  7.  
  8.  */
  9. #include "RandomDotMain.h"
  10. #include "RandomDotRes.h"
  11. #include "Error.h"
  12.  
  13. /* Error strings
  14.  */
  15. enum{
  16.     kGenericErrS = 1,
  17.     kDirFulErr,        /*Directory full*/
  18.     kDskFulErr,        /*disk full*/
  19.     kNsvErr,        /*no such volume*/
  20.     kIOErr,            /*I/O error*/
  21.     kBdNamErr,        /*there may be no bad names in the final system!*/
  22.     kFnOpnErr,        /*File not open*/
  23.     kEofErr,        /*End of file*/
  24.     kPosErr,        /*tried to position to before start of file (r/w)*/
  25.     kMFulErr,        /*memory full (open) or file won't fit (load)*/
  26.     kTmfoErr,        /*too many files open*/
  27.     kFnfErr,        /*File not found*/
  28.     kWPrErr,        /*diskette is write protected.*/
  29.     kFLckdErr,        /*file is locked*/
  30.     kVLckdErr,        /*volume is locked*/
  31.     kFBsyErr,        /*File is busy (delete)*/
  32.     kDupFNErr,        /*duplicate filename (rename)*/
  33.     kOpWrErr,        /*file already open with with write permission*/
  34.     kRfNumErr,        /*refnum error*/
  35.     kGfpErr,        /*get file position error*/
  36.     kVolOffLinErr,    /*volume not on line error (was Ejected)*/
  37.     kPermErr,        /*permissions error (on file open)*/
  38.     kVolOnLinErr,    /*drive volume already on-line at MountVol*/
  39.     kNsDrvErr,        /*no such drive (tried to mount a bad drive num)*/
  40.     kNoMacDskErr,    /*not a mac diskette (sig bytes are wrong)*/
  41.     kExtFSErr,        /*volume in question belongs to an external fs*/
  42.     kFsRnErr,        /*file system internal error:during rename the old entry was deleted but could not be restored.*/
  43.     kBadMDBErr,        /*bad master directory block*/
  44.     kWrPermErr,        /*write permissions error*/
  45.     kDirNFErr,        /*Directory not found*/
  46.     kTmwdoErr,        /*No free WDCB available*/
  47.     kBadMovErr,        /*Move into offspring error*/
  48.     kWrgVolTypErr,    /*Wrong volume type error [operation not supported for MFS]*/
  49.     kVolGoneErr,    /*Server volume has been disconnected.*/
  50.     kMemFullError,    /*Insufficent memory to complete operation.*/
  51.     kPortInUse,        /* That port appears to be in use by another program. */
  52.     kClosedPreferences,    /* the preferences file is not available */
  53.     kBadPict,        /* This Pict file seems to be damaged */
  54.     kBadFileType,    /* I don't know how to open this kind of file */
  55.     kBadPGMMagicNumber,    /* This pgm file seems to be damaged */
  56.     kPictOnly,        /* I can only replace a Pict file */
  57.     kNeed7AndColor    /* This program needs Color Quickdraw and System 7 or later */
  58. };
  59.  
  60. /* GetErrorStringCode - translate system error code to string index
  61.  */
  62. static Integer GetErrorStringCode(OSErr errCode){
  63.     switch(errCode){
  64.     case noErr:
  65.     case eUserCancel:    return 0;
  66.     case dirFulErr:        return kDirFulErr;        /*Directory full*/
  67.     case dskFulErr:        return kDskFulErr;        /*disk full*/
  68.     case nsvErr:        return kNsvErr;            /*no such volume*/
  69.     case ioErr:            return kIOErr;            /*I/O error*/
  70.     case bdNamErr:        return kBdNamErr;        /*there may be no bad names in the final system!*/
  71.     case fnOpnErr:        return kFnOpnErr;        /*File not open*/
  72.     case eofErr:        return kEofErr;            /*End of file*/
  73.     case posErr:        return kPosErr;            /*tried to position to before start of file (r/w)*/
  74.     case mFulErr:        return kMFulErr;        /*memory full (open) or file won't fit (load)*/
  75.     case tmfoErr:        return kTmfoErr;        /*too many files open*/
  76.     case fnfErr:        return kFnfErr;            /*File not found*/
  77.     case wPrErr:        return kWPrErr;            /*diskette is write protected.*/
  78.     case fLckdErr:        return kFLckdErr;        /*file is locked*/
  79.     case vLckdErr:        return kVLckdErr;        /*volume is locked*/
  80.     case fBsyErr:        return kFBsyErr;        /*File is busy (delete)*/
  81.     case dupFNErr:        return kDupFNErr;        /*duplicate filename (rename)*/
  82.     case opWrErr:        return kOpWrErr;        /*file already open with with write permission*/
  83.     case rfNumErr:        return kRfNumErr;        /*refnum error*/
  84.     case gfpErr:        return kGfpErr;            /*get file position error*/
  85.     case volOffLinErr:    return kVolOffLinErr;    /*volume not on line error (was Ejected)*/
  86.     case permErr:        return kPermErr;        /*permissions error (on file open)*/
  87.     case volOnLinErr:    return kVolOnLinErr;    /*drive volume already on-line at MountVol*/
  88.     case nsDrvErr:        return kNsDrvErr;        /*no such drive (tried to mount a bad drive num)*/
  89.     case noMacDskErr:    return kNoMacDskErr;    /*not a mac diskette (sig bytes are wrong)*/
  90.     case extFSErr:        return kExtFSErr;        /*volume in question belongs to an external fs*/
  91.     case fsRnErr:        return kFsRnErr;        /*file system internal error:during rename the old entry was deleted but could not be restored.*/
  92.     case badMDBErr:        return kBadMDBErr;        /*bad master directory block*/
  93.     case wrPermErr:        return kWrPermErr;        /*write permissions error*/
  94.     case dirNFErr:        return kDirNFErr;        /*Directory not found*/
  95.     case tmwdoErr:        return kTmwdoErr;        /*No free WDCB available*/
  96.     case badMovErr:        return kBadMovErr;        /*Move into offspring error*/
  97.     case wrgVolTypErr:    return kWrgVolTypErr;    /*Wrong volume type error [operation not supported for MFS]*/
  98.     case volGoneErr:     return kVolGoneErr;        /*Server volume has been disconnected.*/
  99.     case memFullErr:    return kMemFullError;    
  100.     case portInUse:        return kPortInUse;        /* That port appears to be in use by another program. */
  101.     case eClosedPreferences:return kClosedPreferences;    /* the preferences file is not available */
  102.     case eBadPict:        return kBadPict;        /* This Pict file seems to be damaged */
  103.     case eBadFileType:    return kBadFileType;    /* I don't know how to open this kind of file */
  104.     case eBadPGMMagicNumber:    return kBadPGMMagicNumber;    /* This pgm file seems to be damaged */
  105.     case ePictOnly:        return kPictOnly;        /* I can only replace a Pict file */
  106.     case eNeed7AndColor:return kNeed7AndColor;    /* This program needs Color Quickdraw and System 7 or later */
  107.     default:            return kGenericErrS;    
  108.     }
  109. }
  110.  
  111. /* TellError - if an error occurred, report it to the user.
  112.  */
  113. OSErr TellError(OSErr errCode){
  114.     Str255    errS, s;
  115.     Integer    errN;
  116.  
  117.     if(0 == (errN = GetErrorStringCode(errCode))){
  118.         return errCode;
  119.     }
  120.     GetIndString(errS, kErrorStrs, errN);
  121.     NumToString(errCode, s);
  122.     ParamText(errS, s, emptyS, emptyS);
  123.     Alert(rError, NIL);
  124.     return errCode;
  125. }
  126.